/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package isd.inventario.informe;

import isd.general.excepciones.ExcepcionGeneralSistema;
import isd.general.modelo.GR_Formulario;
import isd.general.rn.FormularioRN;
import isd.general.util.InformeBase;
import isd.inventario.modelo.ST_Comprobante;
import isd.inventario.modelo.ST_Movimiento;
import isd.inventario.rn.ComprobanteInventarioRN;
import isd.inventario.rn.InventarioRN;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Claudio
 */
@ManagedBean
@ViewScoped
public class ImpresionComprobanteInventarioBean extends InformeBase {
    
    @EJB private InventarioRN inventarioRN;
    @EJB private FormularioRN formularioRN;
    @EJB private ComprobanteInventarioRN comprobanteInventarioRN;

    private ST_Movimiento m;
    private Integer nrofor;
    GR_Formulario f;

    private List<ST_Comprobante> comprobantes;
    private ST_Comprobante comprobante;

    /** Creates a new instance of ImpresionComprobanteProduccionBean */
    public ImpresionComprobanteInventarioBean() {
        
        titulo = "Impresión Comprobante Inventario";

    }

    @PostConstruct
    public void init(){


        comprobantes = comprobanteInventarioRN.getLista();

    }

    @Override
    public void validarDatos() throws ExcepcionGeneralSistema {

        f = formularioRN.getFormulario(comprobante);

        if(f==null){
            throw new ExcepcionGeneralSistema("Seleccione un comprobante");
        }

        if(f.getNombreReporte()==null){
            throw new ExcepcionGeneralSistema("El comprobante seleccionado no tiene asignado reporte");
        }

        if(nrofor<=0){
            throw new ExcepcionGeneralSistema("Ingrese un número de comprobante válido");
        }

        m = inventarioRN.getMovimiento(f.getModfor(), f.getCodfor(), nrofor, f.getSucursal().getSucurs());

        if(m==null){
            throw new ExcepcionGeneralSistema("El comprobante solicitado no existe");
        }
    }

    @Override
    public void cargarParametros() throws ExcepcionGeneralSistema {

        parameters.put("MODFOR", m.getModfor());
        parameters.put("CODFOR", m.getCodfor());
        parameters.put("NROFOR", m.getNrofor());
        parameters.put("SUCURS", m.getSucurs());

        nombreArchivo = m.getComprobante().getCodigo()+"-"+m.getNrofor();
        pathReporte = f.getNombreReporte()+".jasper";
    }

    public ST_Comprobante getComprobante() {
        return comprobante;
    }

    public void setComprobante(ST_Comprobante comprobante) {
        this.comprobante = comprobante;
    }

    /**
    public void imprimirSSSS(){

        try {
            //JasperReport masterReport = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResourceAsStream("/isd/reporte/plantilla/A4_FORMULARIO.jasper"));
            JasperReport masterReport = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResourceAsStream(f.getNombreReporte()+".jasper"));
            reportFactory.verReportePDF(masterReport, nombreArchivo, parameters);

        } catch (Exception e){
            e.printStackTrace();
            JsfUtil.addErrorMessage("No se puede imprimir a pdf " + e.getMessage());
        }
    }
    */

    

    public Integer getNrofor() {
        return nrofor;
    }

    public void setNrofor(Integer nrofor) {
        this.nrofor = nrofor;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }



    
    public List<ST_Comprobante> getComprobantes() {
        return comprobantes;
    }

    public void setComprobantes(List<ST_Comprobante> comprobantes) {
        this.comprobantes = comprobantes;
    }

    public GR_Formulario getF() {
        return f;
    }

    public void setF(GR_Formulario f) {
        this.f = f;
    }

    public ST_Movimiento getM() {
        return m;
    }

    public void setM(ST_Movimiento m) {
        this.m = m;
    }
    
    
}
